IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='spSeguridadMessageException_Insert' and XTYPE='P')
BEGIN
	DROP PROCEDURE [dbo].[spSeguridadMessageException_Insert]
END
GO
CREATE PROCEDURE [dbo].[spSeguridadMessageException_Insert]
	 @OP VARCHAR(64)=NULL
	,@ParamAuxiliar NVARCHAR(MAX)=NULL
	,@ID INT=NULL
	,@ERROR_NUMBER INT=NULL
	,@ERROR_SEVERITY INT=NULL
	,@ERROR_STATE INT=NULL
	,@ERROR_PROCEDURE VARCHAR(128)=NULL
	,@ERROR_LINE INT=NULL
	,@ERROR_MESSAGE VARCHAR(2048)=NULL
	,@ERROR_MESSAGE_MODIFIED VARCHAR(2048)=NULL
    ,@ERROR_DESCRIPTION VARCHAR(2048)=NULL
WITH ENCRYPTION
AS
SET NOCOUNT ON;
BEGIN

/*****     OPERACION POR DEFECTO    *****/
IF @OP IS NULL OR @OP = ''
BEGIN
	BEGIN TRANSACTION
	INSERT INTO [dbo].[SeguridadMessageException]
		(
		 [ERROR_NUMBER]
		,[ERROR_SEVERITY]
		,[ERROR_STATE]
		,[ERROR_PROCEDURE]
		,[ERROR_LINE]
		,[ERROR_MESSAGE]
		,[ERROR_MESSAGE_MODIFIED]
		,[ERROR_DESCRIPTION]
		)
	VALUES
		(
		 @ERROR_NUMBER
		,@ERROR_SEVERITY
		,@ERROR_STATE
		,@ERROR_PROCEDURE
		,@ERROR_LINE
		,@ERROR_MESSAGE
		,@ERROR_MESSAGE_MODIFIED
		,@ERROR_DESCRIPTION
		)

	IF @@ERROR<>0 BEGIN ROLLBACK TRANSACTION RETURN 1 END	
	
	---- Si la tabla Tiene una columna IDENTITY, Devuelvo el registro del ultimo Indentity INSERTADO
	---- (Esto se hace para que .NET Trabaje correctamente)
	SELECT * FROM [dbo].[SeguridadMessageException] WHERE [ID]=SCOPE_IDENTITY()
	
	COMMIT TRANSACTION
	RETURN 0
END


--- Si se llega a este punto es porque el @OP indicado no Existe en el Procedimiento Almacenado
IF @OP IS NOT NULL
	BEGIN
	SET @ParamAuxiliar='La Operacion "'+@OP+'" No esta definida en el Procedimiento almacenado "'+OBJECT_NAME(@@PROCID)+'", Revise!.'
	RAISERROR(@ParamAuxiliar,16,1)
	RETURN 1
END

END;
